﻿using HK.Core.Common.Data;
using HK.Editor.GUIEx.Protocol.Data;
using HK.Editor.GUIEx.Protocol.TreeView.Data;
using HK.Editor.GUIEx.Window;
using Unity.Plastic.Antlr3.Runtime.Tree;
using UnityEditor.IMGUI.Controls;
using UnityEngine;

namespace HK.Editor.GUIEx.Protocol.Window
{
    /// <summary>
    /// 接口 : 窗体 - 多列列表
    /// </summary>
    /// <typeparam name="TWin">窗体类型</typeparam>
    /// <typeparam name="TConf">窗体配置类型</typeparam>
    /// <typeparam name="TData">窗体数据类型</typeparam>
    public interface IMultiColsWindow<TWin, TConf, out TData> : IWindow<TConf, TData>
        where TWin : WindowBase, IWindow<TConf, TData>
        where TConf : JsonData, IWindowConf
        where TData : JsonData, IWindowData
    {
        
#region TreeView

        /// <summary>
        /// 表状态
        /// </summary>
        TreeViewState TableState { get; }

        /// <summary>
        /// 表头
        /// </summary>
        MultiColumnHeaderState TableHeader { get; }
        
        /// <summary>
        /// 根节点
        /// </summary>
        ITreeBranch Root { get; }

#endregion
        
#region Position&Size

        /// <summary>
        /// 树形视图显示区域
        /// </summary>
        Rect TreeRect { get; }
        
        /// <summary>
        /// 树形视图位置
        /// </summary>
        Vector2 TreePos { get; }
        
        /// <summary>
        /// 树形视图宽度
        /// </summary>
        float TreeWidth { get; }
        
        /// <summary>
        /// 树形视图高度
        /// </summary>
        float TreeHeight { get; }

#endregion
        
    }
}
